import qs from "querystring";

/**
 * 该方法实现具体请求
 * @param url 请求路径
 * @param data 请求参数
 * @param method 请求方式
 * @param responseType 返回类型
 * @param headers 请求头
 * @returns {Promise<any>} 就扣返回结果
 */
export default ({url, data, method, responseType, headers}) => {

  headers || (headers = {'Accept': 'application/json', 'Content-Type': 'application/json'})
  method || (method = "GET")

  let fetchOptions = {
    method: method
  };
  if (responseType) fetchOptions.responseType = responseType
  if (headers) fetchOptions.headers = headers

  if (/get|delete/i.test(method)) url = `${url}?${qs.stringify(data)}`

  if (/post|put/i.test(method)) fetchOptions.body = JSON.stringify(data)

  return fetch(url, fetchOptions).then(res => res.json())
}
